//import javax.swing.tree.TreeNode;
import javax.swing.tree.TreeNode;
import java.util.Deque;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class test {
//
public static void main(String[] args) {
BinaryTree binaryTree = new BinaryTree();
BinaryTree.BTNode root = binaryTree.createBinaryTree();
binaryTree.postOrder(root);
}
//    public static void main(String[] args) {
//        Scanner sc=new Scanner(System.in);
//        while (sc.hasNextLine()){
//            String str = sc.nextLine();
//            BinaryTree.BTNode root=createTree(str);
//            inorder(root);
//        }
//    }
//    public static int i=0;
//    public static BinaryTree.BTNode createTree(String str){
//        BinaryTree.BTNode root=null;
//        if(str.charAt(i)!='#'){
//            root=new BinaryTree.BTNode(str.charAt(i));
//            i++;
//            root.left=createTree(str);
//            root.right=createTree(str);
//        }else{
//            i++;
//        }
//        return  root;
//    }
//    public static void inorder(BinaryTree.BTNode root){
//        if(root==null) return;
//        inorder(root.left);
//        System.out.println(root.val+" ");
//        inorder(root.right);
//    }
//    private boolean getPath(TreeNode root, TreeNode node, Deque<TreeNode> stack) {
//        if(root==null||node==null)return false;
//        stack.push(root);
//        //放完之后  要检查
//        if(root==node) return true;
//        boolean ret1=getPath(root.left,node,stack);
//        if(ret1) return true;
//        boolean ret2= getPath(root.right,node,stack);
//        if(ret2) return true;
//        stack.pop();
//        return false;
//    }
//    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
//        Deque<TreeNode> stack1= new LinkedList<>();
//        getPath(root,p,stack1);
//        Deque<TreeNode> stack2= new LinkedList<>();
//        getPath(root,q,stack2);
//        //判断栈的大小
//        int size1=stack1.size();
//        int size2=stack2.size();
//
//        if(size1>size2){
//            int size=size1-size2;
//            while(size!=0){
//                stack1.pop();
//                size--;
//            }
//        }else{
//            int size=size2-size1;
//            while(size!=0){
//                stack2.pop();
//                size--;
//            }
//        }
//        //栈里面数据的个数  是一样的
//        while (!stack1.isEmpty()&&!stack2.isEmpty()){
//            if(stack1.peek()!=stack2.peek()){
//                stack1.pop();
//                stack2.pop();
//            }else{
//                return  stack1.peek();
//            }
//        }
//        return null;
//    }



}
